HFragmenter Operator

 

HFragment UI

thinkingParticles' HFragmenter redefines your way of working with special effects on destruction sequences. This thinkingParticles operator is one of the most powerful features implemented so far, it's pretty complex and flexible beyond imagination.

We do suggest to take your time to learn this powerful new tool, one way to get started with HFragmenter is to check out all the sample scenes that came with thinkingParticles.

Chaos Forced into Structure! 

Hfragmenter is all about structuring complex physics into one single easy to use interface and keeping full control at all times. HFragmenter is a Hierarchical Destrcution (fragmentation) set of tools. It's not only one thinkingParticles node it is a set of multiple tools, all inter-linked and working together with each other.

There are 3 tools that come with thinkingParticles that are meant to work together and offer automatic direct linking between each other. The tools are:

 
 

Structural Integrity

 

The purpose of the tools listed above is to help you in creating a structural skeleton that is based on freely adjustable physical parameters and hierarchical ordering of components of the object to be destroyed. This unique approach lets you freely define the breaking parts of an object along with when and how they will break off. Once a structural skeleton has been defined, it can be altered and adjusted to your needs any time.

There is one main rule to follow with this tool-set the "final" object that is to be broken needs to be one mesh. It can not be individual objects, all faces or parts of the object need to be collapsed into one mesh. Find below an example to illustrate the one mesh rule.

Example:
You want to destroy a model of a complete building. Some of the components of a building may be:

 

All of the above objects can easily add up to a count of hundreds of objects or even thousands. Remember, all those objects need to end up in one single Mesh. The magic of HFragmenter comes into play when the HFragmenter Modifier is used, after the model is constructed, to define the "destruction groups," by simply selecting the elements in that single mesh and naming them accordingly. Using proper hierarchical structuring allows to easily define the order of destruction and the "chunks" that should break apart from the main mesh piece by piece

What if I do not want to setup the structure "afterwards"? 

Collapsing thousands of objects into one mesh and then assigning each element to a specific group can be a really tiresome task.

While HFragmenter Modifier offers all the necessary tools to define a structural skeleton in no time at all - there is another tool that can help in getting complex setups much faster. The 3ds Max utility TP Collapse automatically prepares complex 3ds Max rigs to be used by HFragmenter Modifier; in fact it automatically collapses multiple linked objects into one Mesh and assigns proper Fragmenter Groups. To learn more about the TP Collapse Utility CLICK HERE

Why one Mesh Only? 

The main idea behind the "one mesh" solution is to enable the shape collision engine to handle huge amounts of complex objects interacting with each other. "Carving out" chunks of debris or fragments from one single mesh helps the collision engine to interact and calculate only those parts of the object relevant to the actual effect at that time. Another key advantage of the "one mesh" approach is the preservation of mass that comes for free by using the one mesh approach. Imagine a 3D model of a huge building with several stories and each level of the building has multiple rooms and assets in it like chairs, tables, doors, carpets,lamps and so on. To simulate a total collapse of such a building caused by an earth quake for example it would be a massive task for the physics engine to handle every single object on its own. It's more efficient to start breaking the object off as the disaster progresses through the structure and as the building breaks the individual components can be released as well.


Operator Inputs 

ON - feed a "True" value into this input to enable the operator and its functionality.

Time
- every operator can have its own "local" time, you may feed any Time value into this input.

Activation Value
- when connected, this input overwrites the "Value" spinner control and feeds in the value.

Activation Code
- to procedurally control the activation of the fragmentation "at will", you may feed in any value to this input.

Joint Break Code
- to release (break) one or multiple joints you may use this input to specify the value that will be used to break a joint.

Joint Break Use Light
- to directly control the "Use Light" switch for breaking joints, connect this input to any other operator offering a boolean result/value.

Activation Use Light
- connect any operator to this boolean input to control the activation/deactivation of the global "Use Light" switch for Fragment groups.

Activation Map Multiplier
- to procedurally control the Map Multiplier value, connect any operator to this input.

Operator Outputs 

*Born Particle - outputs the particle data of the "just created" particle (fragment). This is an Initiator output - this means this output activates connected nodes as well!

*Born Node
- outputs the node data of the relevant object that was used ot create the fragment.

*Born Node ID
- outputs the thinkingParicles node ID of the object used to create the fragments. The first picked object is Node ID = 0

*Parent Particle
- outputs the "parent" particle, it's the particle that was previously a fragment and can be used to fragment again - or it is the first particle (the original).

Rollout Menu 

HFragment UI

Pick
- click this button to enter Object pick mode. Pick one or many many objects from within the scene to bring it into the HFragmenter Operator.

REM.
- removes the selected object

Unhide
- unhides the selected object.

Activation 

HFragment UI

In the Activation menu section you'll find all controls to "trigger" the breaking (fragmentation) events. It is important to remember that any trigger value set to 0 (zero) means that the relevant trigger is deactivated (off).

Trigger Values like Value, Map, Code or Lights set here will trigger a breaking of the object based on the values set in all of the hierarchy levels found in the FGroup menu section of this dialog.

Value - sets the global trigger "breaking value", this parameter value is compared to each single Position parameter in the hierarchy level as set in the HFragmenter Modifier section of the dialog.

Code
- is a fixed number used to initiate an object breaking on "will". Whenever this value is smaller or equal to the Code parameter in the hierarchy level, as set in the HFragmenter Modifier section of the dialog, the object is broken at the specified hierarchy level. This Trigger overrules all other triggers on breaking an object.

Map
- defines the breaking trigger value for the hierarchy levels by using a standard 3ds Max texture map. The trigger values are defined as: black color = 0 and white color = 1. This is also the value you would use in the Map parameter found in the FGroup menu section of the Hierarchy level to brake.

 

Map Multiplier - adjusts the texture map values by multiplying the result gathered from the texture map by this value.

Use Lights
- when checked, the illumination strength of picked light sources can be used to define the Hierarchical breaking of an object.

Pick
- lets you pick any light in the scene

Rem
- removes the selected light form the list of lights

Important
All triggers like Value, Map, Lights work fully independent of each other; there is no interaction or connecten between them!



 
 
 
 

Spreading Size - is a radius set in world units. Using this feature will create a progressive "breaking" effect of an object. This "search" or affected radius is increased in size over time (controlled by Spreading Time) it is perfect to simulate shock waves running through a complex object hierarchy. All objects (picked for this operator) falling into this radius will be broken off , without testing any other possible trigger events (Map,Light etc)!

Spreading Time
- defines the time the radius needs to grow in size (in frames: standard 3ds Max system time).

Spreading Gradient
- lets you define the animation curve of the spreading radius; this works similarly to an ease-in or ease-out curve. The gradient is defined by the left hand side (representing radius size 0) and the right hand side (representing size 100%). A Spreading Time value of 30 frames will look "into" this gradient 30 times (30 samples). This method of manipulation offers full control over the radius size animation. A black color will create a radius of 0 while a white color in the gradient will create a size of 100%.

Shape 

HFragment UI

This rollout menu section makes most sense with objects fragmenting or breaking into individual faces and not complete elements. To understand the concept of 3ds Max elements check out the section about: What is an Element.
All controls described below, create a "volume" out of individual faces by extruding the face.

Thickness
- used to define the thickness of the fragments in 3ds Max world units.

Segments
- sets the amount of segmentation along the extrude.

Outside ID
- defines the Material ID for the original faces created before the extrude. A value of 0 will use the original material ID.

Edge ID
- sets the edge material ID (faces around the extrude surface). A value of 0 will use the material ID of the original face that will be extruded.

Backside ID
- defines the Backside material ID (the cap of the extrude). A value of 0 will use the same material ID as the original face that will be extruded.

Joints 

HFragment UI

The joints menu section offers controls to define breaking triggers for Dynamics joints. HFragmenter and HFragmenter Modifier together build the foundation of the most comprehensive destruction tools ever developed for 3ds Max. Besides breaking object hierarchies into elements, Physics Dynamics based joints can also be used to define a complex object structure for breaking.

Collision
- each HFragmenter can be assigned to one specific shape collision (SC) engine. Keep in mind that only the selected Shape Collision engine is responsible for the simulation of the breaking effect.

Joint Break Code
- defines the Joint breaking trigger value, this value is similar to the Code parameter described in the Activation menu section.

Use Lights to Break
- when checked and when lights are picked from the scene, the Joints can be broken off by the illumination levels created by the selected light sources.

HFragmenter Modifier

HFragment UI

HFragment UI

Fragmenter Group Selected

Joint Selected

 

HFragmenter uses the HFragmenter Modifier to define the structural skeleton of the object that needs to be broken up. Without the Modifier to build the hierarchy and define the elements of an object, the HFragmenter operator is useless! Keep in mind that a proper setup of the structural skeleton and pattern will save you an immense amount of after work in the long run! Every minute or hour spent in planning the structural skeleton of an object saves you days of re-adjusting or re-simming physics! Take this as advice for good practice.

The Treeview of this dialog shows 2 different sub-object levels of the HFragment modifier within the same dialog window. The first entry (by default is called FGroup) shows the Hierarchy of the individual components of which the object is made. Depending on the selection sets created with the HFragment Modifier, the Faces or Elements will be visible all grouped in separate levels or sub-levels.

In addition to the above, all available Joints will also be shown in this dialog. Clicking on each Joint's name will show the corresponding rollout menu with all its parameters. Unfolding (click the + sign) a Joint in the Treeview will reveal the object names of the "Joint connections".

List View
- reflects the object breaking hierarchy as a standard collapsible tree view. Every "level" of the hierarchy can be selected within this tree view and the relevant settings will be shown in the FGroup Rollout Menu down below. In addition to the Faces and Elements, Joints are shown in this Treeview as well.

Fragment Group Selected (FGroup) 

HFragment UI

The following properties are available when a FGroup is selected in the Treeview

Group
- sets the particle group used for the created fragments of "that" (selected) level of the hierarchy.

Activation 

Value - sets the value at which breaking of this level of the hierarchy should be done. Whenever Value equals or is bigger than the global Trigger value the objects in that "level" are broken off (fragmented).

Code
- if this fixed number is equal or bigger than the global Trigger value of the same name, the level of this hierarchy is broken off along with all sub levels underneath this hierarchy.

Map
- sets the value that needs to be equal or bigger as compared to the global texture map trigger, to break off the hierarchy at this level.

Light
- defines a threshold for the Illumination value that needs to be equal to this value or higher, for all picked light sources, to trigger a fragmentation.

Spreading
- check this option to allow the selected (and only the selected) Hierarchy Level to be affected by the "spreading" function of the HFragmenter. Turn this option off to disable for the selected Hierarchy level the "spreading" function.

Use Lights
- when checked, illumination strength of picked light sources can be used to define the Hierarchical breaking of an object.

When a light is picked in the FGroup Rollout, the lights picked in the global menu section above will not be used at all for this selected Hierarchy Level. The selected light(s) will only affect one Hierarchy Level down below; Sub-Hierarchy levels will not be affected

   
 
 


 

Pick - lets you pick any light in the scene

Rem
- removes the selected light form the list of lights

Joint Selected 

HFragment UI

The properties listed below will show up when a Joint is selected.

Breakable
- check this option to make a joint breakable. Every joint type can be turned into a "breaking" joint, so whenever any of the trigger values are kicking in, the link will be automatically broken.

Velocity
- defines the speed at which the objects, connected to the joint, need to travel away to break the joint.

Rotation
- sets the maximum rotational speed a joint can endure before it breaks off. This simulates the centrifugal force that may appear on fast rotating masses.

Code
- sets a definable trigger number; whenever this number is set the joint is broken off

Light
- sets the lights intensity that need to be reached to break off a joint. The illumination is measured at the center of the joint.

Collision
- check this option to enable self collision between joint partners.

Friction
- sets the friction amount for the selected joint to create a more natural looking dampening system of joints.

Important
The Light values set here behave like a threshold; if the light value is brighter than the value set here, the hierarchy level is broken off.